using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;

namespace FU.Capstones.IMS.Web.Common.InventoryServiceProxy.DataContracts
{
    [DataContract(Namespace = WebConstants.ServiceNamespace)]
    public class NewPasswordData : Account
    {
        public NewPasswordData()
        {
            AddAllAttributeValidators();
            AddValidationFor(() => NewPasswordConfirmed)
                .When(x =>
                          {
                              NewPasswordData data = (NewPasswordData) x;
                              if (!string.IsNullOrEmpty(data.CurrentPassword))
                                  return data.CurrentPassword.Equals(data.NewPasswordConfirmed);
                              return false; 
                          })
                .Show("Mật khẩu mới và mật khẩu nhắc lại chưa giống nhau.");
        }

        private string currentPassword;
        [Required(AllowEmptyStrings = false, ErrorMessage = "Mật khẩu cũ không được bỏ trống!")]
        public string CurrentPassword
        {
            get { return currentPassword; }
            set
            {
                if (!ReferenceEquals(currentPassword, value))
                {
                    currentPassword = value;
                    RaisePropertyChanged(()=>CurrentPassword);
                }
            }
        }

        private string newPassword;
        [DataMember]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Mật khẩu mới không được bỏ trống!")]
        [StringLength(50, ErrorMessage = "Mật khẩu không dài quá 50 kí tự")]
        [Display(Name = "Mật khẩu mới")]
        public string NewPassword
        {
            get { return newPassword; }
            set
            {
                if (!ReferenceEquals(newPassword, value))
                {
                    newPassword = value;
                    RaisePropertyChanged(() => NewPassword);
                }
            }
        }

        private string newPasswordConfirmed;
        [DataMember]
        [Display(Name = "Mật khẩu nhắc lại")]
        public string NewPasswordConfirmed
        {
            get { return newPasswordConfirmed; }
            set
            {
                if (!ReferenceEquals(newPasswordConfirmed, value))
                {
                    newPasswordConfirmed = value;
                    RaisePropertyChanged(() => NewPasswordConfirmed);
                }
            }
        }
    }
}